﻿<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>MouseMove</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<link href="../css/commands.css" rel="stylesheet" type="text/css">
<link href="../css/print.css" rel="stylesheet" type="text/css" media="print">
</head>
<body>

<h1>MouseMove</h1>

<p>移动鼠标。</p>

<p class="CommandSyntax">MouseMove, X, Y [, Speed, R]</p>
<h3>参数 </h3>
<table border="1" width="100%" cellspacing="0" cellpadding="3" bordercolor="#C0C0C0">
  <tr>
    <td>X, Y </td>
    <td>鼠标需要移动到的目标位置的横坐标和纵坐标，可以使用 <a href="../Variables.htm#Expressions">expressions/表达式</a> 。坐标默认相对于当前激活窗口，可以通过设置 <a href="CoordMode.htm">CoordMode/坐标模式</a> 来修改。</td>
  </tr>
  <tr>
    <td width="15%">Speed</td>
    <td width="85%"><p>鼠标移动的速度，从 0（最快）到 100（最慢），可以是 <a href="../Variables.htm#Expressions">expression/表达式</a> 。注意：设置为 0 的时候，鼠标会立即移动到目标位置。如果省略，默认使用 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed/设置鼠标默认移动速度</a> 设置的速度，如果没有设置，则使用 2 。</p>
      <p><em>Speed</em> 参数在 <a href="SendMode.htm">SendInput/SendPlay 模式</a> 中是无效的，在这两种模式中会直接移动鼠标到目标位置（即使 <a href="SetMouseDelay.htm">SetMouseDelay/设置鼠标延时</a> 中有一种模式适用于 SendPlay 模式）。如果需要显示鼠标移动轨迹——比如在向观众演示的时候——可以使用 <a href="Send.htm#Click"><em>SendEvent {Click 100, 200)</em></a> 或者 <a href="SendMode.htm"><em>SendMode Event/发送模式事件</em></a> 。（也可同时设置 <a href="BlockInput.htm">BlockInput/阻止输入</a>）。</p></td>
  </tr>
  <tr>
    <td>R</td>
    <td>如果使用了这个参数使用了字母 R 的话，坐标轴参数 X 和 Y 会被当作当前鼠标位置的偏移来处理。也就是说，鼠标会根据设置的坐标参数从当前位置开始往右移 X 像素（如果设置了负值则是往左移），以及往下移 Y 像素（如果设置了负值则是往上移）。</td>
  </tr>
</table>

<h3>注意</h3>
<p>这个命令使用的发送模式由 <a href="SendMode.htm">SendMode/发送模式</a> 来设置。</p>
<p>在某些游戏中，<a href="SendMode.htm">SendPlay 模式</a> 比其它的模式具有更好的兼容性。在某些程序或者游戏中，如果鼠标移动速度过快，它们可能无法识别鼠标的移动，这时候可以使用 <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed/设置鼠标默认移动速度</a> 来减慢鼠标的移动速度（不过只能在 <a href="SendMode.htm">SendEvent 模式</a> 中有效）。</p>
<p><a href="BlockInput.htm">BlockInput/阻止输入</a> 命令可以防止用户在脚本运行过程中因移动或点击鼠标而造成脚本错误。不过在 <a href="SendMode.htm">SendInput/SendPlay 模式</a> 中一般不需要使用这个命令，因为它们本身就自动推迟了用户对鼠标的操作。</p>
<p>每个鼠标移动事件后都会有一个自动的延时（除了 <a href="SendMode.htm">SendInput 模式</a> ），使用 <a href="SetMouseDelay.htm">SetMouseDelay/设置鼠标延时</a> 来改变延时的长度。</p>
<p>这是另外一种移动鼠标的方式，它在一些多显示器环境下会运行得更好：</p>
<pre><a href="DllCall.htm">DllCall</a>("SetCursorPos", int, 100, int, 400)  <em>; 第一个数值是横坐标，第二个数值是纵坐标（相对于屏幕）。</em></pre>
<p>顺便说一下，这里有一个暂时隐藏鼠标的例子 <a href="DllCall.htm#HideCursor">hide-cursor example</a> 。</p>
<h3>相关命令</h3>
<p><a href="CoordMode.htm">CoordMode</a>, <a href="SendMode.htm">SendMode</a>, <a href="SetDefaultMouseSpeed.htm">SetDefaultMouseSpeed</a>, <a href="SetMouseDelay.htm">SetMouseDelay</a>, <a href="Click.htm">Click</a>, <a href="MouseClick.htm">MouseClick</a>, <a href="MouseClickDrag.htm">MouseClickDrag</a>, <a href="MouseGetPos.htm">MouseGetPos</a>, <a href="BlockInput.htm">BlockInput</a></p>
<h3>示例</h3>
<pre class="NoIndent"><em>; 移动鼠标到一个新位置</em>
MouseMove, 200, 100

<em>; 缓慢的移动鼠标（速度50），从当前位置往右20像素，往下30像素</em>
MouseMove, 20, 30, 50, r</pre>

</body>
</html>
